e414ad0eca307d49a36b25590acb05b8dbc5090d,src/main/java/pitt/search/semanticvectors/PSI.java,PSI,trainIncrementalPSIVectors,#String#,185

Before Change



      Vector predToAdd = subjectElementalVector.copy();
      predToAdd.bind(permutedObjectElementalVector);
      predicateSemanticVector.superpose(predToAdd, sWeight * oWeight, null);

      Vector predToAddInv = objectElementalVector.copy();
      predToAddInv.bind(permutedSubjectElementalVector);

After Change


      subjToAdd.bind(predicateElementalVectorInv);
      objectSemanticVector.superpose(subjToAdd, pWeight * (sWeight + predWeight), null);

      if (flagConfig.trainingcycles() > 0) //for experiments with generating iterative predicate vectors
      {
    	  
       	  Vector predicateSemanticVector = semanticPredicateVectors.getVector(predicate);
    		  Vector predicateSemanticVectorInv = semanticPredicateVectors.getVector(predicate+ "-INV");
          //construct permuted editions of subject and object vectors (so binding doesn't commute)
          Vector permutedSubjectElementalVector = VectorFactory.createZeroVector(flagConfig.vectortype(), flagConfig.dimension());
          Vector permutedObjectElementalVector = VectorFactory.createZeroVector(flagConfig.vectortype(), flagConfig.dimension());
          permutedSubjectElementalVector.superpose(subjectElementalVector, 1, predicatePermutation); 
          permutedObjectElementalVector.superpose(objectElementalVector, 1, predicatePermutation); 
          permutedSubjectElementalVector.normalize();
          permutedObjectElementalVector.normalize();  
    	  
      Vector predToAdd = subjectElementalVector.copy();
      predToAdd.bind(permutedObjectElementalVector);
      predicateSemanticVector.superpose(predToAdd, sWeight * oWeight, null);

      Vector predToAddInv = objectElementalVector.copy();
      predToAddInv.bind(permutedSubjectElementalVector);